package org.japo.java.basics.main;

/*******************************************************************************
 * @author José A. Pacheco Ondoño
 * @version 1.1 - 25/10/2011
 *
 * Sintaxis:
 *      java ClaseMath
 *
 * Este programa sirve para ilustrar la utilización de los métodos de la clase 
 * Math.
 ******************************************************************************/
public class ClaseMath {

    /***************************************************************************
     * Método de entrada al programa
     **************************************************************************/
    public static void main(String[] arg) {
        // Definición de variables
        int ent1 = 3;
        int ent2 = -7;
        double dbl1 = 3.14;
        double dbl2 = -2.71;

        // Constantes
        System.out.println();
        System.out.println("Constantes");
        System.out.println("El valor del número PI es " + Math.PI);
        System.out.println("El valor del número E  es " + Math.E);

        // Funciones de valor absoluto
        System.out.println();
        System.out.println("Funciones de valor absoluto");
        System.out.println("El valor absoluto de " + ent2 + " es "
                + Math.abs(ent2));
        System.out.println("El valor absoluto de " + dbl2 + " es "
                + Math.abs(dbl2));

        // Funciones trigonométricas
        System.out.println();
        System.out.println("Funciones trigonométricas");
        System.out.println("El seno     de 90º (PI/2 rad) es "
                + Math.sin(Math.PI / 2));
        System.out.println("El coseno   de 90º (PI/2 rad) es "
                + Math.cos(Math.PI / 2));
        System.out.println("La tangente de 45º (PI/4 rad) es "
                + Math.tan(Math.PI / 4));

        // Funciones exponenciales
        System.out.println();
        System.out.println("Funciones exponenciales");
        System.out.println("El número E elevado a " + ent1 + " es "
                + Math.exp(ent1));
        System.out.println("El número E elevado a " + dbl1 + " es "
                + Math.exp(dbl1));
        System.out.println("El logaritmo natural de " + ent1 + " es "
                + Math.log(ent1));
        System.out.println("El logaritmo natural de " + dbl1 + " es "
                + Math.log(dbl1));
        System.out.println("La raiz cuadrada de " + ent1 + " es "
                + Math.sqrt(ent1));
        System.out.println("La raiz cuadrada de " + dbl1 + " es "
                + Math.sqrt(dbl1));
        System.out.println("El número " + ent1 + " elevado a " + dbl1
                + " es " + Math.pow(ent1, dbl1));
        System.out.println("El número " + dbl1 + " elevado a " + ent1
                + " es " + Math.pow(dbl1, ent1));

        // Funciones de precisión de reales
        System.out.println();
        System.out.println("Funciones de precisión de reales");
        System.out.println("El real por arriba de " + dbl1 + " es "
                + Math.ceil(dbl1));
        System.out.println("El real por debajo de " + dbl1 + " es "
                + Math.floor(dbl1));
        System.out.println("El real " + dbl1 + " redondeado a entero es "
                + Math.round(dbl1));
        System.out.println("El real " + dbl1 + " sin decimales es "
                + Math.rint(dbl1));

        // Funciones de comparación
        System.out.println();
        System.out.println("Funciones de comparación");
        System.out.println("El mayor de " + ent1 + " y " + ent2
                + " es " + Math.max(ent1, ent2));
        System.out.println("El mayor de " + dbl1 + " y " + dbl2
                + " es " + Math.max(dbl1, dbl2));
        System.out.println("El mayor de " + ent1 + " e " + dbl2
                + " es " + Math.max(ent1, dbl2));
        System.out.println("El mayor de " + dbl1 + " y " + ent2
                + " es " + Math.max(dbl1, ent2));

        // Funciones aleatorias
        System.out.println();
        System.out.println("Funciones aleatorias");
        System.out.println("Un double aleatorio entre 0 y 1: " + Math.random());
    }
}